import axios from 'axios'
import axiosExtra from 'axios-extra'
const baseUrl = 'http://localhost:3080'

const http = axios.create({
    baseURL: baseUrl
})

http.interceptors.response.use(response => {
    return response.data
})

const getSysFileList = ( ) => {
    return http.get(`/v1/minio/tasks/sysFileList`)
}
/**
 * 根据文件的md5获取未上传完的任务
 * @param  md5 文件md5
 * @returns {Promise<AxiosResponse<any>>}
 */
const taskInfo = ( md5) => {
    return http.get(`/v1/minio/tasks/${ md5}`)
}

/**
 * 初始化一个分片上传任务
 * @param  md5 文件md5
 * @param fileName 文件名称
 * @param totalSize 文件大小
 * @param chunkSize 分块大小
 * @returns {Promise<AxiosResponse<any>>}
 */
const initTask = ({  md5, fileName, totalSize, chunkSize }) => {
    return http.post('/v1/minio/tasks', { md5, fileName, totalSize, chunkSize})
}

/**
 * 获取预签名分片上传地址
 * @param  md5 文件md5
 * @param partNumber 分片编号
 * @returns {Promise<AxiosResponse<any>>}
 */
const preSignUrl = ({  md5, partNumber }) => {
    return http.get(`/v1/minio/tasks/${ md5}/${partNumber}`)
}

/**
 * 合并分片
 * @param  md5
 * @returns {Promise<AxiosResponse<any>>}
 */
const merge = ( md5) => {
    return http.post(`/v1/minio/tasks/merge/${ md5}`)
}

const downloadFile = ( id) => {
    return http.get(`/v1/minio/tasks/download/${ id}`)
}

export {
    taskInfo,
    initTask,
    preSignUrl,
    merge,
    getSysFileList
}
